#ifndef MENU3_H
#define MENU3_H

#include <iostream>
#include <cmath>

class Rectifier {
protected: // To allow subclass access
    double voltage;     // Transformer output voltage
    double resistance;  // Load resistance
    static constexpr double PI = 3.14159265358979323846;  // PI as Global, universal constants

public:
    Rectifier(double voltage, double resistance);
    virtual void rectification() const = 0;  // Pure virtual function to calculate rectification
    virtual ~Rectifier() = default;
};

class HalfWaveRectifier : public Rectifier {
public:
    HalfWaveRectifier(double voltage, double resistance);
    void rectification() const override;
};

class FullWaveRectifier : public Rectifier {
public:
    FullWaveRectifier(double voltage, double resistance);
    void rectification() const override;
};

void calculateMenu(void);
#endif